<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>

  <body>
    <div id="app">
      fdafda{{message}}fdafdsa
      <div>
        <div>
          <div>
            <div>fdafdsa{{mydata}}fdsafd</div>
          </div>
        </div>
      </div>
    </div>
    <script>
      var data = {
        message: "你好",
        mydata: "张三",
      };

      var appEle = document.querySelector("#app");
      // console.log(appEle.innerHTML);
      // var str = appEle.innerHTML;
      // var reg = /{{(\w+)}}/g;

      // if(reg.test(str)){
      //     var key = RegExp.$1;
      //     console.log(key);
      //      str =  str.replace(reg,data[key]);
      //   console.log(str);
      // }

      // str.replace(reg,)
      // 递归查找dom结构；
      renderDom(appEle);
      function renderDom(appEle) {
        var childnodes = appEle.childNodes;
        // console.log(childnodes);
        childnodes.forEach(function (node) {
          if (node.nodeType == 3) {
            //文本节点
            var content = node.textContent;
            // console.log(content);
            var reg = /{{(\w+)}}/g;
            if (reg.test(content)) {
              var key = RegExp.$1;
              // 先获取，在通过正则替换，在重新设置 textContent
              node.textContent = node.textContent.replace(reg, data[key]);
            }
          }

          if (node.nodeType == 1) {
            if (node.childNodes.length > 0) {
              // 有子元素
              renderDom(node);
            }
          }
        });
      }
    </script>
  </body>
</html>
